home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / procssng / ccs / ccs-11tl.lha / lbl / xview / genial / ui / file.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-07-14  |  4.0 KB  |  213 lines

  1. /*
  2.  * file.c
  3.  */
  4.  
  5. #include <stdio.h>
  6. #include "ui.h"
  7. #include "sm.h"
  8. #include "gfm.h"
  9.  
  10. int       gfm_load_callback();
  11. int       gfm_save_callback();
  12.  
  13. /***************************************/
  14. /*
  15.  * Notify callback function for `lmode'.
  16.  */
  17. void
  18. lmode_proc(item, value, event)
  19.     Panel_item item;
  20.     int       value;
  21.     Event    *event;
  22. {
  23.     set_lmode(value);
  24. #ifdef DEBUG
  25.     fprintf(stderr, "file: lmode_proc: value: %u\n", value);
  26. #endif
  27. }
  28.  
  29. /*
  30.  * Notify callback function for `load'.
  31.  */
  32. void
  33. load_proc(item, event)
  34.     Panel_item item;
  35.     Event    *event;
  36. {
  37.     char     *fname = (char *) xv_get(file_win->l_fname, PANEL_VALUE);
  38.  
  39.     if (strlen(fname) == 0) {
  40.     gfm_activate(gfm_ctrl, NULL, NULL, NULL, gfm_load_callback,
  41.              NULL, GFM_LOAD);
  42.     return;
  43.     }
  44.     if (state_dispatch(LOAD, (caddr_t *) fname) == IMG_LOADED) {
  45.     xv_set(file_win->window1, XV_SHOW, FALSE, NULL);
  46.     }
  47. }
  48.  
  49.  
  50. /*******************************************************/
  51. gfm_load_callback(ip, dir, file)
  52.     gfm_popup_objects *ip;
  53.     char     *dir;
  54.     char     *file;
  55. {
  56.     char     *fname;
  57.  
  58.     if (dir == NULL || file == NULL)
  59.     return;
  60.  
  61.     fname = strcat(dir, "/");
  62.     fname = strcat(fname, file);
  63.  
  64.     if (state_dispatch(LOAD, (caddr_t *) fname) == IMG_LOADED) {
  65.     xv_set(file_win->window1,
  66.            XV_SHOW, FALSE, NULL);
  67.     xv_set(ip->popup, XV_SHOW, FALSE, NULL);
  68.     }
  69. }
  70.  
  71. /*******************************************************/
  72. gfm_save_callback(ip, dir, file)
  73.     gfm_popup_objects *ip;
  74.     char     *dir;
  75.     char     *file;
  76. {
  77.     char     *fname;
  78.  
  79.     if (dir == NULL || file == NULL)
  80.     return;
  81.  
  82.     fname = strcat(dir, "/");
  83.     fname = strcat(fname, file);
  84.  
  85.     if (save_image(fname, ip->load) >= 0) {
  86.     xv_set(file_win->window1, XV_SHOW, FALSE, NULL);
  87.     xv_set(ip->popup, XV_SHOW, FALSE, NULL);
  88.     }
  89. }
  90.  
  91. /*******************************************************/
  92. /*
  93.  * Notify callback function for `l_fname'.
  94.  */
  95. Panel_setting
  96. lname_proc(item, event)
  97.     Panel_item item;
  98.     Event    *event;
  99. {
  100.     load_proc(item, event);
  101.     return panel_text_notify(item, event);
  102. }
  103.  
  104. /*
  105.  * Notify callback function for `smode'.
  106.  */
  107. void
  108. smode_proc(item, value, event)
  109.     Panel_item item;
  110.     int       value;
  111.     Event    *event;
  112. {
  113.  
  114.     char      rastname[80];
  115.     char     *fname;
  116.  
  117.     set_smode(value);
  118.  
  119.     fname = (char *) xv_get(base_win->image_fname, PANEL_LABEL_STRING, NULL);
  120.     switch (value) {
  121.     case 0:
  122.     sprintf(rastname, "%s", fname);
  123.     break;
  124.     case 1:
  125.     sprintf(rastname, "%s", fname);
  126.     break;
  127.     case 2:
  128.     sprintf(rastname, "%s.sub", fname);
  129.     break;
  130.     case 3:
  131.     sprintf(rastname, "%s.log", fname);
  132.     break;
  133.     case 4:
  134.         sprintf(rastname, "%s.ras", fname);
  135.     break;
  136.     case 5:
  137.     sprintf(rastname, "%s.trace", fname);
  138.     break;
  139.     case 6:
  140.     sprintf(rastname, "%s.hist", fname);
  141.     break;
  142.     default:
  143.     sprintf(rastname, "%s", fname);
  144.     break;
  145.     }
  146.  
  147.     xv_set(file_win->s_fname, PANEL_VALUE, rastname, NULL);
  148.  
  149. #ifdef DEBUG
  150.     fprintf(stderr, "file: smode_proc: value: %u\n", value);
  151. #endif
  152. }
  153.  
  154. /*
  155.  * Notify callback function for `save'.
  156.  */
  157. void
  158. save_proc(item, event)
  159.     Panel_item item;
  160.     Event    *event;
  161. {
  162.     char     *fname = (char *) xv_get(file_win->s_fname, PANEL_VALUE);
  163.  
  164.     if (strlen(fname) == 0) {
  165.     gfm_activate(gfm_ctrl, NULL, NULL, NULL, gfm_save_callback,
  166.              NULL, GFM_SAVE);
  167.     return;
  168.     }
  169.     if (save_image(fname, item) >= 0) {
  170.     xv_set(file_win->window1,
  171.            XV_SHOW, FALSE, NULL);
  172.     }
  173. #ifdef DEBUG
  174.     fputs("file: save_proc\n", stderr);
  175. #endif
  176. }
  177.  
  178. /*
  179.  * Notify callback function for `s_fname'.
  180.  */
  181. Panel_setting
  182. sname_proc(item, event)
  183.     Panel_item item;
  184.     Event    *event;
  185. {
  186.     save_proc(item, event);
  187.     return panel_text_notify(item, event);
  188. }
  189.  
  190. /*
  191.  * Notify callback function for `chooser_load'.
  192.   */
  193. void
  194. chooser_load_proc(item, event)
  195.     Panel_item item;
  196.     Event    *event;
  197. {
  198.     gfm_activate(gfm_ctrl, NULL, NULL, NULL, gfm_load_callback,
  199.          NULL, GFM_LOAD);
  200. }
  201.  
  202.  /*
  203.   * Notify callback function for `chooser_save'.
  204.   */
  205. void
  206. chooser_save_proc(item, event)
  207.     Panel_item item;
  208.     Event    *event;
  209. {
  210.     gfm_activate(gfm_ctrl, NULL, NULL, NULL, gfm_save_callback,
  211.          NULL, GFM_SAVE);
  212. }
  213.